package com.levi.pay.config;

import com.lly835.bestpay.config.AliPayConfig;
import com.lly835.bestpay.config.WxPayConfig;
import com.lly835.bestpay.service.BestPayService;
import com.lly835.bestpay.service.impl.BestPayServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

/**
 * @author shentong
 * @since 2022/3/17 8:56 PM
 */
@Component
public class BestPayConfig {

    @Autowired
    private WxPayAccountConfig wxPayAccountConfig;

    @Autowired
    private AliPayAccountConfig aliPayAccountConfig;



    @Bean
    public BestPayService bestPayService(WxPayConfig wxPayConfig,AliPayConfig aliPayConfig) {

        //支付类, 所有方法都在这个类里
        BestPayServiceImpl bestPayService = new BestPayServiceImpl();
        bestPayService.setWxPayConfig(wxPayConfig);
        bestPayService.setAliPayConfig(aliPayConfig);
        return bestPayService;
    }

    /**
     * 微信支付配置
     * @return
     */
    @Bean
    public WxPayConfig wxPayConfig() {
        //微信支付配置
        WxPayConfig wxPayConfig = new WxPayConfig();
        //支付商户资料
        wxPayConfig.setAppId(wxPayAccountConfig.getAppId());
        wxPayConfig.setMchId(wxPayAccountConfig.getMchId());         //商户id
        wxPayConfig.setMchKey(wxPayAccountConfig.getMchKey());       //商户密钥
        wxPayConfig.setNotifyUrl(wxPayAccountConfig.getNotifyUrl()); //支付平台的异步回调地址
        wxPayConfig.setReturnUrl(wxPayAccountConfig.getReturnUrl());
        return wxPayConfig;
    }

    /**
     * 支付宝支付配置
     * @return
     */
    @Bean
    public AliPayConfig aliPayConfig() {
        AliPayConfig aliPayConfig = new AliPayConfig();
        aliPayConfig.setAppId(aliPayAccountConfig.getAppId());
        aliPayConfig.setPrivateKey(aliPayAccountConfig.getPrivateKey());
        aliPayConfig.setAliPayPublicKey(aliPayAccountConfig.getPublicKey());
        aliPayConfig.setNotifyUrl(aliPayAccountConfig.getNotifyUrl());
        aliPayConfig.setReturnUrl(aliPayAccountConfig.getReturnUrl());
        return aliPayConfig;
    }
}
